Donut Maze 1


Posted by cwc329 on 2020-06-27

寫個解題心得,
雖然我覺得這題其實沒有新東西,
就只是處理比較麻煩。

走迷宮

本質還是走迷宮,也就是說 BFS 還是有用的,這題的重點其實在於傳送點怎麼處理。
首先題目說傳送點不計入步數,也就是說當從'.'走到字母的時候,其實就是直接走到下一個'.',這是我覺得這題很重要的一個點。
另外比較特殊的是還要自己找起點終點,而且起點還有終點沒有傳送點功能,這兩個點對於傳送點處理算是 edge case。
先來說說怎麼找起點還有終點,我的程式碼是把這兩個分開寫,不過心得寫到這邊想到其實可以寫成同一個 function。
原理很簡單,先找到 'AA' 還有 'ZZ' 的組合,然後再去找'.'
不過麻煩在於不知道兩個字還有點的相對位置,解決這個問題的想法後來也用在找傳送點。
就是找到第一個字(例如:'A'),然後去檢查這個字四周有沒有另一個字('A'),如果沒有就不是我們要找的;如果有,就以第一個字為基準,先往外一層找點,如果第一層沒有找到就在往外一層。
這樣其實有個限制,就是迷宮的重送點們彼此不相鄰,要是相鄰有可能會出現錯誤。
其實傳送點也是同樣的方式,只是當遇到傳送點,第一步要先找出字母組合,接著就是依樣畫葫蘆去找點,最後再傳回新的點之座標。
這題其實真的沒啥好講的,放在超級超級挑戰題也只是傳送點處理不是一般麻煩而已。
照慣例附上我超級醜的程式碼










Related Posts

0o JS 程式碼品質檢測工具 o0

0o JS 程式碼品質檢測工具 o0

.Net MVC authorization Controller and Workcontext extension in razor view

.Net MVC authorization Controller and Workcontext extension in razor view

留言板、權限管理問題

留言板、權限管理問題


Comments